<?php

/**
 * Helper para enviar mails, usa las colas de activeMQ.
 *
 * Se encola un mensaje en un cola activeMQ, el formato del mensaje debe ser un array encodeado json con
 * los siguientes keys:
 *  - from: el from o un array con el email del from y una descripcion
 *  - to: email del destinatario o un array con el email y una descripcion
 *
 */
class Ext_Mailer_Mailer {

    protected $_queueClient;

    function __construct( $queue ) {
        $this->_queueClient = new Ext_Queue_RpcClient( $queue, 'Ext_Mailer_Sender' );
    }


    /**
     * Envia un mail, esta funcion esta por backward-compatibility
     *
     * Esta funcion implementa el metodo viejo para enviar mail, esta aqui por backward compatibility.
     *
     * @param mixed $from remitente o array con email del remitente y descripcion
     * @param string $to email del destinatario
     * @param string $subject titulo del mail
     * @param string $body cuerpo del mail en html.
     * @return boolean devuelve siempre true.
     */
    public function sendHtmlMail($from, $to, $subject, $body) {
        $this->_queueClient->sendHtmlMail($from, $to, $subject, $body);
        return true;
    }


    /**
     * Envia un mail a partir de un template.
     *
     * Esta funcion envia un mail usando Zend_Mail, el contenido del mail se envia en un par de templates que son opcionales.
     * Un template es la version html y la otra es texto.
     *
     * @param mixed $from remitente, puede ser un array con el mail en el indice 0 y la descripcion en el indice 1
     * @param mixed $to destinatario puede ser un array con muchos destinatarios mail en el key descripcion en el value
     * @param string $subject subject del mail
     * @param mixed $templateParams array con parametros que se le pasan al template engine
     * @param string $htmlTemplate el template html para el mail
     * @param string $textTemplate el template sin html para el mail.
     * @param mixed $cc  carbon copy opcional
     * @param mixed $bcc blind carbon copy opcional
     * @return boolean devuelve siempre true.
     */
    public function sendTemplatedMail( $from, $to, $subject, $templateParams, $htmlTemplate = null, $textTemplate = null, $cc = null, $bcc = null ) {
        $this->_queueClient->sendTemplatedMail( $from, $to, $subject, $templateParams, $htmlTemplate, $textTemplate, $cc, $bcc );
        return true;
    }

    /**
     * Envia un mail.
     *
     * Esta funcion envia un mail usando Zend_Mail
     *
     * @param mixed $from remitente, puede ser un array con el mail en el indice 0 y la descripcion en el indice 1
     * @param mixed $to destinatario puede ser un array con muchos destinatarios mail en el key descripcion en el value
     * @param string $subject subject del mail
     * @param string $htmlBody el body en html, se arma un multipart-mail
     * @param string $textBody el body en texto
     * @param mixed $cc  carbon copy opcional
     * @param mixed $bcc blind carbon copy opcional
     * @return boolean devuelve siempre true.
     */
    public function sendMail( $from, $to, $subject, $htmlBody = null, $textBody = null, $cc = null, $bcc = null )
    {
        $this->_queueClient->sendMail( $from, $to, $subject, $htmlBody, $textBody, $cc, $bcc );
        return true;
    }

}
